Numerik

Ingenieurinformatik Teil 2, Sommersemester 2026

David Straub

Numerik – D. Straub

Gliederung

  1. Einführung in Matlab
  2. Arbeiten mit Arrays
  3. Funktionen und Kontrollstrukturen
  4. Analysis
  5. Lineare Algebra
  6. Differentialgleichungen
  7. Einführung in Simulink 👈
Numerik – D. Straub

Einheit 1 – Heute
→ Was ist Simulink?
→ Vom Anfangswertproblem (AWP) zum Signalflussplan
→ Simulink-Blöcke, Subsysteme und Parameter

Einheit 2
→ Weitere Beispiele und Anwendungen

Numerik – D. Straub
Numerik – D. Straub

Simulink ist eine blockbasierte, grafische Simulationsumgebung in Matlab.

Statt einen Algorithmus zu schreiben, beschreibt man das System als Signalflussplan: Blöcke berechnen mathematische Operationen, Verbindungen transportieren Signale.

Numerik – D. Straub

Vom Anfangswertproblem zum Signalflussplan

Numerik – D. Straub

Das Euler-Verfahren – Ausgangspunkt

Das Euler-Verfahren für y˙=f(t,y)\dot{y} = f(t,\, y) führt pro Schritt zwei Operationen aus:

y˙n=f(tn,yn)dannyn+1=yn+Δty˙n\dot{y}_n = f(t_n,\, y_n) \qquad \text{dann} \qquad y_{n+1} = y_n + \Delta t\cdot\dot{y}_n

for n = 1 : length(t)-1
    dy_dt  = f( t(n), y(n) )     % rechte Seite auswerten
    y(n+1) = y(n) + dy_dt * dt   % Euler-Schritt
end

Jetzt: Jede Operation wird ein Block, jedes Zwischenergebnis ein Signal.

Numerik – D. Straub

Vom Euler-Schritt zum Signalflussplan

y˙n=f(tn,yn)  y  f(t,y)  y˙  \dot{y}_n = f(t_n,\, y_n) \quad\Rightarrow\quad \xrightarrow{\;y\;}\boxed{f(t,y)}\xrightarrow{\;\dot{y}\;}

yn+1=yn+Δty˙n  y˙  dt  y  y_{n+1} = y_n + \Delta t\cdot\dot{y}_n \quad\Rightarrow\quad \xrightarrow{\;\dot{y}\;}\boxed{\int dt}\xrightarrow{\;y\;}

yy taucht auf beiden Seiten auf → Rückkopplung:

  y  f(t,y)  y˙  dt  y      \xrightarrow{\;y\;}\boxed{f(t,y)}\xrightarrow{\;\dot{y}\;}\boxed{\int dt}\xrightarrow{\;y\;}\;\;\circlearrowleft

Ein Signalflussplan ist eine grafische for-Schleife.

Numerik – D. Straub

Signalflussplan und Solver

Ein Zustand ist ein Wert, den ein Block zwischen Zeitschritten speichert.

f-Block – kein Zustand: berechnet y˙n=f(tn,yn)\dot{y}_n = f(t_n, y_n) direkt aus dem Eingang.

Integrator – Zustand yny_n:

  • Auswertung: gibt den gespeicherten Wert yny_n aus
  • Fortschreibung: speichert den neuen Wert yn+1=yn+Δty˙ny_{n+1} = y_n + \Delta t \cdot \dot{y}_n

Der Solver treibt die for-Schleife an und übernimmt die Zeitinkrementierung tn+1=tn+Δtt_{n+1} = t_n + \Delta t.

Einstellbar: Euler (festes Δt\Delta t), ode45 (adaptives Δt\Delta t), …

Numerik – D. Straub

Batterie-DGL (1. Ordnung)

Euler-Schritt mit f(t,T)=P(t)λ(TT)Cthf(t,T) = \dfrac{P(t) - \lambda(T-T_\infty)}{C_\text{th}}:

Tn+1=Tn+Δtf(tn,Tn)T_{n+1} = T_n + \Delta t \cdot f(t_n,\, T_n)

Eine Akkumulationszeile → ein Integrator:

  T  f(t,T)  T˙  dt  T      \xrightarrow{\;T\;} \boxed{f(t,T)} \xrightarrow{\;\dot{T}\;} \boxed{\int dt} \xrightarrow{\;T\;} \;\; \circlearrowleft

Numerik – D. Straub
Numerik – D. Straub

Integrator-Block

  y˙  dt  y  \xrightarrow{\;\dot{y}\;} \boxed{\int dt} \xrightarrow{\;y\;}

  • Eingang: Ableitung y˙\dot{y}
  • Ausgang: Zustand yy
  • Parameter: Anfangsbedingung y0y_0 (Initial Condition)

Symbol in Simulink: 1s\dfrac{1}{s} (Laplace-Notation: Integration im Zeitbereich = Division durch ss)

Numerik – D. Straub

Scope und Mux

Scope – zeigt Signale als Funktion der Zeit an.

Mux – fasst mehrere Signale zu einem Vektorsignal zusammen:

  x(t)    }    (xx˙)  Scope\xrightarrow{\;x(t)\;}\;\Big\}\;\xrightarrow{\;\begin{pmatrix}x\\\dot{x}\end{pmatrix}\;}\boxed{\text{Scope}}

Scope mit einem Mux-Eingang → mehrere Kurven in einem Fenster.

Alternativ: Scope mit mehreren Eingängen direkt konfigurieren (Number of Input Ports).

Numerik – D. Straub

Implementieren Sie das Batterie-Modell T˙=f(T)=Pλ(TT)Cth\dot{T} = f(T) = \dfrac{P - \lambda(T-T_\infty)}{C_\text{th}} in Simulink. P=125WP=125\,\text{W}, T=25CT_\infty = 25\,^\circ\text{C}, Cth=100J/KC_\text{th} = 100\,\text{J/K}, λ=2W/K\lambda = 2\,\text{W/K}, T0=25CT_0 = 25\,^\circ\text{C}.

  1. Neues Modell erstellen
  2. Blöcke platzieren: Matlab Function, Integrator, Scope
  3. Matlab Function implementieren: function T_dot = f(T)
  4. Blöcke verbinden – Rückkopplung nicht vergessen
  5. Anfangswert T0=25T_0 = 25 am Integrator einstellen
  6. Stoppzeit tend=360st_\text{end} = 360\,\text{s}, simulieren, Ergebnis prüfen

Extraaufgabe: Ersetzen Sie P=constP = \text{const} durch ein gemessenes Lastprofil (ti,Pi)(t_i, P_i): From Workspace-Block hinzufügen, PP als zweiten Eingang in f(T, P) führen.

Numerik – D. Straub

Batterie ohne Matlab Function

f(T)=Pλ(TT)Cthf(T) = \dfrac{P - \lambda(T-T_\infty)}{C_\text{th}} lässt sich direkt als Signalflussplan aus Elementarblöcken aufbauen:

  T  T  TT  ×λ  λΔT  P  PλΔT  ×1Cth  T˙  \xrightarrow{\;T\;}\boxed{-T_\infty}\xrightarrow{\;T{-}T_\infty\;}\boxed{\times\lambda}\xrightarrow{\;\lambda\Delta T\;}\boxed{P-\,\cdot}\xrightarrow{\;P{-}\lambda\Delta T\;}\boxed{\times\tfrac{1}{C_\text{th}}}\xrightarrow{\;\dot{T}\;}

Block Funktion
Constant liefert einen festen Wert (PP, λ\lambda, TT_\infty, CthC_\text{th})
Gain multipliziert ein Signal mit einer Konstanten
Sum addiert oder subtrahiert Signale

Der Matlab Function-Block ist kompakter — aber Elementarblöcke machen die Rechenoperationen explizit sichtbar und sind direkt für die Codegenerierung geeignet.

Numerik – D. Straub

Subsysteme: Modelle als Blöcke

Ein Subsystem fasst Blöcke zu einem wiederverwendbaren Block zusammen.

Das Batterie-Modell aus der Aufgabe wird zum Subsystem „Zelle":

  P(t)  Zelle  T(t)  \xrightarrow{\;P(t)\;} \boxed{\text{Zelle}} \xrightarrow{\;T(t)\;}

Zwei thermisch gekoppelte Zellen (Einheit 9) → zwei Subsysteme verbinden.

Komplexe Systeme entstehen durch Komposition — jede Ebene zeigt nur den notwendigen Abstraktionsgrad.

Industrieapplikation: Ein Simulink-Modell kann direkt in C-Code übersetzt werden (Codegenerierung) — dieselbe Logik, die im Modell läuft, läuft dann auf eingebetteter Hardware.

Numerik – D. Straub

Parameter und Schnittstelle

Parameter aus dem Workspace: Variablen wie CthC_\text{th}, λ\lambda im Matlab-Workspace definieren — Simulink-Blöcke lesen sie automatisch. Kein Hardcoding in der Matlab Function.

From Workspace: gemessene Daten (z.B. Lastprofil P(t)P(t)) direkt ins Modell laden.

To Workspace: Simulationsergebnisse als Matlab-Variable speichern und weiterverarbeiten.

→ Simulink modelliert, Matlab analysiert.

Numerik – D. Straub

From Workspace: Lastprofil laden

% Zeitpunkte und Leistungswerte definieren
t = [0,  600, 1200, 1800, 2400, 3600];  % s
P = [50, 200,  800,  400,  100,    0];  % W

% Als timeseries verpacken
lastprofil = timeseries(P, t);

Im From Workspace-Block: Feldname lastprofil eintragen.

Simulink interpoliert zwischen den Stützstellen — der Block gibt bei jedem Zeitschritt den passenden P(t)P(t)-Wert aus.

Numerik – D. Straub

Federschwinger (2. Ordnung)

Standardform mit y1:=x,  y2:=x˙y_1 := x,\; y_2 := \dot{x}:

y˙1=y2,y˙2=kmy1\dot{y}_1 = y_2, \qquad \dot{y}_2 = -\frac{k}{m}\,y_1

Euler-Schrittzwei Akkumulationszeilen, beide mit demselben Δt\Delta t:

x˙n+1=x˙n+Δtx¨nxn+1=xn+Δtx˙n\dot{x}_{n+1} = \dot{x}_n + \Delta t\cdot\ddot{x}_n \qquad x_{n+1} = x_n + \Delta t\cdot\dot{x}_n

Zwei Akkumulationszeilen → zwei Integratoren:

  x¨  dt  x˙  dt  x  ×(k/m)  x¨      \xrightarrow{\;\ddot{x}\;} \boxed{\int dt} \xrightarrow{\;\dot{x}\;} \boxed{\int dt} \xrightarrow{\;x\;} \boxed{\times(-k/m)} \xrightarrow{\;\ddot{x}\;} \;\; \circlearrowleft

Numerik – D. Straub

Vorgehen: DGL nn-ter Ordnung → Signalflussplan

Schritt
1 DGL nach der höchsten Ableitung auflösen
2 nn Integratoren in Reihe zeichnen
3 Ausgänge benennen: y(n1),,y˙,yy^{(n-1)},\,\ldots,\,\dot{y},\,y
4 Rechte Seite als Signalpfad aufbauen
5 Ergebnis zurück in den ersten Integratoreingang; Anfangswerte einstellen
Numerik – D. Straub

Implementieren Sie den harmonischen Oszillator mx¨+kx=0m\ddot{x} + kx = 0 mit m=1m = 1, k=1k = 1, x(0)=1x(0) = 1, x˙(0)=0\dot{x}(0) = 0 in Simulink.

  1. Signalflussplan aufzeichnen (zwei Integratoren, Gain-Block)
  2. Modell in Simulink aufbauen
  3. Anfangswerte an den Integratoren einstellen
  4. x(t)x(t) und x˙(t)\dot{x}(t) mit Scope darstellen (Mux verwenden)
  5. Ergebnis mit der analytischen Lösung x(t)=cos(t)x(t) = \cos(t) vergleichen

Extraaufgabe: kk und mm als Workspace-Variablen definieren.

Numerik – D. Straub